home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 47 / Amiga Format AFCD47 (Issue 131, Xmas 1999).iso / -screenplay- / shareware / mre / missile.amos / missile.amosSourceCode < prev    next >
AMOS Source Code  |  1999-10-04  |  11KB  |  333 lines

  1. '**********************************************
  2. '* Missile Command ï¿½ Mr E Software 
  3. '**********************************************
  4. Randomize Timer
  5. If Ntsc Then N=-56
  6. Unpack 8 To 0 : Palette 0,0,0,0
  7. Volume 63 : Led Off 
  8. Make Mask 
  9. '
  10. Wait Vbl 
  11. C1$="(16,1,1)"
  12. '
  13. Hide 
  14. Change Mouse 4
  15. Limit Mouse 112,50 To 464,241+N
  16. '
  17. '
  18. Dim BASE(7),MISX(27),MISY(27),CLR(7)
  19. '
  20. For F=0 To 27 : Read MISX(F),MISY(F) : Next F
  21. Data 27,14,23,14,19,14,15,14,11,14,7,14,3,14,25,12,21,12,17,12,13,12,9,12,5,12
  22. Data 23,10,19,10,15,10,11,10,7,10,21,8,17,8,13,8,9,8,19,6,15,6,11,6,17,4,13,4,15,2
  23. For F=0 To 7 : Read CLR(F) : Next F
  24. Data $181,$881,$118,$818,$188,$888,$333,$811
  25. '
  26. NEWGAME:
  27. Do 
  28.    Hide 
  29.    Set Rainbow 0,0,16,"","",""
  30.    Unpack 8 To 0
  31.    Pen 2 : Paper 0
  32.    Print At(1,24);"SCORE:";SCORE;
  33.    Print At(31,24);"WAVE:";WVE;
  34.    While Mouse Click=0 : Wend 
  35.    While Mouse Key : Wend 
  36.    Fade 1 : Wait 15
  37.    Screen Open 0,352,260,8,Lowres
  38.    Screen Display 0,112,42+N,352,256
  39.    Curs Off : Flash Off 
  40.    Get Sprite Palette 
  41.    For F=0 To 39 : Set Bob F,-1,, : Next F
  42.    Synchro Off : Update Off 
  43.    INITAMAL
  44.    X Mouse=280 : Y Mouse=162
  45.    Show On 
  46.    WVE=0
  47.    EXTRA=10000
  48.    SCORE=0
  49.    For F=0 To 7 : BASE(F)=-1 : Next F : BASE=6
  50.    BASE(2)=28 : BASE(5)=28
  51.    Cls 6,0,240 To 352,256
  52.    Pen 3 : Paper 6
  53.    Print At(0,31);" SCORE:";SCORE;
  54.    Flash 3,"(ccc,2)(bdd,2)(aee,2)(dbd,2)(eae,2)(ddb,2)(eea,2)"
  55.    
  56.    
  57.    While BASE
  58.       Inc WVE
  59.       Wait Vbl 
  60.       Cls 1,0,0 To 336,224
  61.       Cls 6,0,240 To 336,248
  62.       For X=0 To 5 : Swap BASE(Rnd(2)*3+Rnd(1)),BASE(Rnd(2)*3+Rnd(1)) : Next X
  63.       For X=0 To 7
  64.          If BASE(X)
  65.             If X=2 or X=5
  66.                Paste Bob X*40+12,224,3
  67.             Else 
  68.                Paste Bob X*40+12,224,2
  69.             End If 
  70.          Else 
  71.             Cls 1,X*40+12,224 To X*40+44,240
  72.          End If 
  73.       Next X
  74.       '
  75.       Amal On 
  76.       '
  77.       Ink 1
  78.       Amreg(4)=WVE+39 : If Amreg(4)>64 Then Amreg(4)=64
  79.       Amreg(5)=0
  80.       Print At(32,31);"WAVE:";WVE;
  81.       'missile speed RI,RJ 
  82.       Amreg(22)=WVE
  83.       '
  84.       R$="" : G$="" : B$="" : C=$111
  85.       If(WVE and 1) Then R$=C1$ : Add C,$600
  86.       If(WVE and 2) Then G$=C1$ : Add C,$60
  87.       If(WVE and 4) Then B$=C1$ : Add C,$6
  88.       Set Rainbow 0,1,258,R$,G$,B$
  89.       Rainbow 0,0,Y Hard(0)-N/2,257
  90.       Colour 2,CLR(WVE and 7) : Colour 6,C
  91.       For F=0 To 8
  92.          Sam Play 1,5,9999 : Wait 2
  93.          Sam Play 4,5,9999 : Wait 2
  94.          Sam Play 2,5,9999 : Wait 2
  95.          Sam Play 8,5,9999 : Wait 4
  96.       Next F
  97.       
  98.       MAIN:
  99.       V=1 : S=0 : SS=Amreg(4)*100 : Amreg(10)=0
  100.       For F=0 To 99
  101.          Repeat 
  102.             Repeat 
  103.                If Inkey$<>"" Then Print At(17,31);"PAUSED"; : X=X Mouse : Y=Y Mouse : While Inkey$<>"" : Wend : While Inkey$="" : X Mouse=X : Y Mouse=Y : Wend : Print At(17,31);"      ";
  104.                Z=Execall(-132)
  105.                Add S,1,0 To 50 : If S=1 and Amreg(5) Then Sam Play 8,4,SS
  106.                If Amreg(13) Then Sam Play V,Amreg(13) : Add V,V,1 To 4 : Amreg(13)=0
  107.                If Amreg(12)
  108.                   If BASE(Amreg(12))
  109.                      Dec BASE(Amreg(12))
  110.                      X=MISX(BASE(Amreg(12)))+Amreg(12)*40+12 : Y=MISY(BASE(Amreg(12)))+224
  111.                      Cls 6,X,Y To X+2,Y+2
  112.                      Amreg(12)=-1
  113.                      Sam Play V,1 : Add V,V,1 To 4
  114.                   Else 
  115.                      Amreg(12)=0 : Sam Play V,6 : Add V,V,1 To 4
  116.                   End If 
  117.                End If 
  118.                While Timer-T<2 : Wend : T=Timer
  119.                If Amreg(3)
  120.                   Sam Play V,2 : Add V,V,1 To 4
  121.                   M=Amreg(3)
  122.                   Draw Amreg(M,6),Amreg(M,7) To Amreg(M,8),Amreg(M,9)
  123.                   Draw Amreg(M,6)+1,Amreg(M,7) To Amreg(M,8)+1,Amreg(M,9)
  124.                   Draw Amreg(M,6)-1,Amreg(M,7) To Amreg(M,8)-1,Amreg(M,9)
  125.                   Draw Amreg(M,6)+2,Amreg(M,7) To Amreg(M,8)+2,Amreg(M,9)
  126.                   Draw Amreg(M,6)-2,Amreg(M,7) To Amreg(M,8)-2,Amreg(M,9)
  127.                   Draw Amreg(M,6)+3,Amreg(M,7) To Amreg(M,8)+3,Amreg(M,9)
  128.                   Amreg(3)=0
  129.                End If 
  130.                Synchro : Update 
  131.                Amreg(20)=Amreg(20)+1
  132.                If Amreg(1) Then Paste Bob Amreg(0),Amreg(1),28 : Amreg(1)=0
  133.                If Amreg(2)<0
  134.                   Sam Stop : Sam Play 15,3
  135.                   Amreg(0,0)=1 : Screen Display 0,,Amreg(0,1),,
  136.                   X=-Amreg(2)/40
  137.                   If BASE(X)
  138.                      BASE(X)=0
  139.                      If X<>2 and X<>5
  140.                         Dec BASE
  141.                      End If 
  142.                      If BASE(2)+BASE(5)=0 and BASE=0
  143.                         Amreg(4)=0
  144.                      End If 
  145.                   End If 
  146.                   Amreg(2)=0
  147.                End If 
  148.                If Amreg(18)
  149.                   Add SCORE,Amreg(18) : Print At(7,31);SCORE; : Amreg(18)=0
  150.                End If 
  151.                Z=Execall(-138)
  152.             Until Amreg(4)=0
  153.          Until Amreg(5)=0
  154.          Wait Vbl 
  155.          Amreg(12)=0
  156.       Next F
  157.       If BASE or(BASE=0 and BASE(2)>0 or BASE(5)>0) or SCORE>EXTRA Then Gosub BONUS
  158.    Wend 
  159.    
  160.    Cls 1,0,0 To 336,224
  161.    Pen 3 : Ink 3 : Paper 1
  162.    Wait 50
  163.    Sam Play 1,3,8000 : Sam Play 2,3,6000 : Sam Play 4,3,7000 : Sam Play 8,3,4000
  164.    For X=1 To 192
  165.       Colour 3,CLR(X and 7)
  166.       Amreg(24)=Rnd(X)-X/2+112 : Amreg(23)=Rnd(X)-X/2+168
  167.       Wait Vbl : Synchro : Update 
  168.    Next X
  169.    For X=1 To 250
  170.       Colour 3,CLR(X and 7)
  171.       Wait Vbl : Synchro : Update 
  172.       Print At(17,17);"THE  END"
  173.    Next X
  174. Loop 
  175. '
  176. Procedure INITAMAL
  177.    '
  178.    Channel 1 To Bob 1
  179.    Bob 1,0,280,40
  180.    A$="   S: P; If RW<4 J S; If RE=0 J S; L RE=RE-1; L RF=RF+1;"
  181.    A$=A$+"   For R0=0 To 100; P; N R0;"
  182.    A$=A$+"   L R0=Z(255)+Z(63)+Z(15)*64; L Y=0-Z(63);"
  183.    A$=A$+"C: L R2=Z(7)*40+28*64;"
  184.    A$=A$+"   L R4=2; L R9=4;"
  185.    A$=A$+"   L R1=224-Y/R4; L R1=R2-R0/R1; If R1<-64 J C; If R1>64 J C;"
  186.    A$=A$+"   L A=40;"
  187.    A$=A$+"M: L R0=R0+R1; L X=R0/64; L Y=Y+R4;"
  188.    A$=A$+"   If BC(1,20,39) J A; L R9=4;"
  189.    A$=A$+"N: P; If Y<228 J M; "
  190.    A$=A$+"V: P; If RC J V; L RC=X; J X;"
  191.    A$=A$+"W: P; If RY J W; L RX=R0/64;L RY=Y; L RS=RS+50;"
  192.    A$=A$+"X: L A=41; P; L A=26; L Y=256; L RF=RF-1; L RN=2; J S;"
  193.    A$=A$+"A: L R9=R9-1; If R9=0 J W; L Y=Y-R4-R4; L R0=R0-R1-R1; J N;"
  194.    Amal 1,A$
  195.    '
  196.    Channel 2 To Bob 2
  197.    Bob 2,0,280,44
  198.    A$="   S: P; If RW<6 J S; If RE=0 J S; L RE=RE-1; L RF=RF+1;"
  199.    A$=A$+"   For R0=0 To 75; P; N R0;"
  200.    A$=A$+"   L R0=Z(1); L R3=RW<10+1; L R3=R3*Z(2);"
  201.    A$=A$+"   L R2=R0*2-1; L R3=R3&2;"
  202.    A$=A$+"   L A=R0*$8000+44-R3; L X=R0*-400+368; L Y=R3*40+70;"
  203.    A$=A$+"   L RR=-3;"
  204.    A$=A$+"   For R1=0 To 400;"
  205.    A$=A$+"   If BC(2,20,39) J W; L X=X+R2; L RP=X; L RQ=Y+8;"
  206.    A$=A$+"   If X&63 J O; If RR<>-3 J O; L RR=3;"
  207.    A$=A$+"O: N R1; J X;"
  208.    A$=A$+"W: P; If RY J W; L RX=X; L RY=Y; L RS=25*R3+150+RS; "
  209.    A$=A$+"   L A=R0*$8000+45-R3; L RN=3; P;"
  210.    A$=A$+"X: L RF=RF-1; P; L A=26; L RP=999; L X=0; L Y=259; J S;"
  211.    Amal 2,A$
  212.    '
  213.    For F=3 To 7
  214.       Channel F To Bob F
  215.       Bob F,0,280,33
  216.       A$="   L: P; If RC<1 J L; L X=RC/40*40+12; L Y=224; L RC=0-RC;"
  217.       A$=A$+"   A 1,(33,3)(34,3)(35,3)(36,3)(37,3)(38,3)(39,1)(26,0); M 0,0,20; L Y=256; J L;"
  218.       Amal F,A$
  219.    Next F
  220.    '
  221.    MISSILES:
  222.    For F=8 To 19
  223.       Channel F To Bob F
  224.       Bob F,0,280,26
  225.       If F<25 Then A$="P;" Else A$=""
  226.       A$=A$+"L RK=0; L: L A=26; P;"
  227.       A$=A$+"   If RR>0 J A;"
  228.       A$=A$+"   If RE=0 J L;"
  229.       A$=A$+"   If RK J D;"
  230.       A$=A$+"   L RE=RE-1; L RF=RF+1;"
  231.       A$=A$+"   L R4=RW>23&1; L R4=RW>31&2+R4;"
  232.       A$=A$+"   L R6=0-RW>39; L R6=Z(RW>3)&1+R6; L R6=Z(RW>7)&1+R6;"
  233.       A$=A$+"   L R4=R6+2+Z(R4);"
  234.       A$=A$+"   L R6=Z(31)*10+13; L Y=-32-Z(31)*R4; "
  235.       A$=A$+"C: P; L R2=Z(7)*40+28*64;"
  236.       A$=A$+"   L R0=R6*64; L R7=Y-2;"
  237.       A$=A$+"   L R1=224-Y/R4; L R1=R2-R0/R1; If R1<-120 J C; If R1>120 J C;"
  238.       A$=A$+"   L R3=29; If R1<-64*R4 J M; L R3=31; If R1>64*R4 J M; L R3=30;"
  239.       A$=A$+"M: L R0=R0+R1; L X=R0/64; L Y=Y+R4;"
  240.       A$=A$+"   If BC("+Str$(F)+",20,39) J W;"
  241.       A$=A$+"   If Y<32 J O; If Y>160 J O; If Z(15) J O; L RI=X; L RJ=Y; L RK=R4;"
  242.       A$=A$+"O: L A=32; P; L A=R3; P; If Y<223 J M; "
  243.       A$=A$+"V: P; If RC J V; L RC=X; J X;"
  244.       A$=A$+"W: L RK=0; P; If RY J W; L RX=R0/64;L RY=Y; L RS=RS+50;"
  245.       A$=A$+"X: P; If RD J X; L R8=X; L R9=Y; L RD="+Str$(F)+";"
  246.       A$=A$+"   L Y=256; L RF=RF-1; J L;"
  247.       A$=A$+"A: L RR=RR-1;"
  248.       A$=A$+"   B: P; If RR>0 J B; L RR=RR-1;"
  249.       A$=A$+"   If RP<24 J L; If RP>312 J L;"
  250.       A$=A$+"   L RF=RF+1;"
  251.       A$=A$+"   L R6=RP; L Y=RQ; L R4=2; J C;"
  252.       A$=A$+"D: L R6=RI; L Y=RJ; L R4=RK; L RK=0; L RF=RF+1; J C;"
  253.       Amal F,A$
  254.    Next F
  255.    '
  256.    CLOUDS:
  257.    For F=20 To 39
  258.       Channel F To Bob F
  259.       Bob F,0,0,26
  260.       A$="L: P; If RY=0 J L; L A=4; L X=RX; L Y=RY; L RY=0; P;"
  261.       A$=A$+"A 1,(4,1)(5,2)(6,2)(7,2)(8,2)(9,2)(10,2)(11,2)(12,2)(13,2)(14,2)(15,2)"
  262.       A$=A$+"    (16,2)(17,2)(18,2)(19,2)(20,2)(21,2)(22,2)(23,2)(24,1)(25,1)(26,1);"
  263.       A$=A$+"    M 0,0,41; L Y=256; L A=26; J L;"
  264.       Amal F,A$
  265.    Next F
  266.    '
  267.    For F=1 To 7
  268.       Channel F+39 To Sprite F
  269.       Sprite F,0,0,26
  270.       A$="L RM=0; L A=27; L: P; L R0=K2+1; If R0|K1=0 J Off; If RZ J L;"
  271.       A$=A$+"     L RM=R0*3+2; W: P; If RM>0 J W; If RM=0 J L; L RM=0;"
  272.       A$=A$+"     L X=120*R0+219; L Y=YH(0,221); L RZ=-1; "
  273.       A$=A$+"     L R0=XM; L R1=YM; L RA=XS(0,R0)-2; L RB=YS(0,R1)-2; M R0-X,R1-Y,Y-R1/6;"
  274.       A$=A$+"X:   If RY J X; L RX=XS(0,R0); L RY=YS(0,R1); L Y=0; J L;"
  275.       A$=A$+"Off: L RZ=0; J L;"
  276.       Amal F+39,A$
  277.    Next F
  278.    '
  279.    Channel 0 To Screen Display 0
  280.    Amal 0,"L R1=YH(0,0); L: P; If R0=0 J L; For R0=1 To 8; M 0,9-R0,2; M 0,R0-9,2 ;Next R0; L R0=0; M 0,R1-Y,8; J L;"
  281.    '
  282. End Proc
  283. '
  284. BONUS:
  285. Paper 1 : Pen 3
  286. Print At(2,12);"20 X";At(1,17);"200 X"
  287. Centre At(,6)+"ATTACK WAVE"+Str$(WVE)+" COMPLETED"
  288. Pen 2
  289. Centre At(,9)+"B O N U S"
  290. Pen 3 : Paper 6
  291. B=60
  292. For F=2 To 5 Step 3
  293.    While BASE(F)
  294.       Dec BASE(F)
  295.       X=MISX(BASE(F))+F*40+12 : Y=MISY(BASE(F))+224
  296.       Cls 6,X,Y To X+2,Y+2
  297.       Paste Bob B,97,46
  298.       Add B,5
  299.       Add SCORE,20 : Print At(7,31);SCORE;
  300.       Sam Play 1,5 : Wait 2 : Sam Play 2,5 : Add V,1,1 To 2
  301.       Wait 2
  302.    Wend 
  303. Next F
  304. '
  305. A=-1 : B=60
  306. For F=0 To 6 Step 3
  307.    For X=F To F+1
  308.       If BASE(X)
  309.          Cls 1,X*40+12,224 To X*40+44,240
  310.          Paste Bob B,132,2
  311.          Add B,40
  312.          Add SCORE,200 : Print At(7,31);SCORE;
  313.          Sam Play 1,5,7000 : Wait 3 : Sam Play 2,5,7000
  314.          Wait 7
  315.       Else 
  316.          A=X
  317.       End If 
  318.    Next X
  319. Next F
  320. BASE(2)=28 : BASE(5)=28
  321. If SCORE>EXTRA
  322.    EXTRA=EXTRA+10000
  323.    If A>-1
  324.       BASE(A)=-1 : Inc BASE
  325.       Paper 1 : Centre At(,21)+" B O N U S   C I T Y" : Paper 6
  326.       Paste Bob 152,184,2
  327.       Wait 10
  328.       V=1 : For F=1 To 32 : Sam Play V,6,Rnd(4000)+8000 : Wait 5 : Add V,V,1 To 4 : Next F
  329.    End If 
  330. End If 
  331. Wait 250
  332. Return 
  333. '